1. Field of the Invention
This invention relates to electronic hardware and, more particularly, to configurable electronic hardware for use by original equipment manufacturers (OEMs) in manufacturing computer systems.
2. Description of the Related Art
Computer systems are information handling systems which can be designed to give independent computing power to single or multiple users. In its simplest form, a computer system is an electronic calculating machine that typically accepts digitized input information, processes it according to a program (a list of internally stored instructions), and produces the resultant output information. A computer system may be described as having five functional parts: input, memory, arithmetic and logic, output, and control. Traditionally, the arithmetic and logic circuits and the control unit are referred to collectively as the central processing unit (CPU) or simply as the processor. Also, input and output equipment are often combined so that such equipment is referred to collectively as input/output (I/O) devices. Computer systems typically include several I/O devices. For example, a computer system can include such I/O devices as a keyboard, a mouse, mass storage devices (e.g., floppy or fixed disk drives, CD-ROM drives and tape drives), a modem, a digital communication device, a video display, audio speakers and a printer.
Computer systems have attained widespread use for providing computer power to many segments of modern society. Consequently, computer systems may be found in many forms including mainframes, minicomputers, workstations, file servers, embedded systems and personal computer systems. A personal computer system, such as the International Business Machines (IBM) compatible personal computer system, can usually be defined as a desk top, floor standing, or portable microcomputer that includes a system unit having a system processor with associated volatile and nonvolatile memory, and various I/O devices. One of the distinguishing characteristics of these systems is the use of a system board to electrically connect these components together.
Computer systems are often marketed by original equipment manufacturers (OEMs). An OEM may manufacture a computer system itself, contract or subcontract another company to do the manufacturing, or buy parts or whole computer systems manufactured by others. One example of a part that is often manufactured by another for incorporation into the OEM""s computer system is the system board of the computer system.
Because different OEMs often use identical system boards in their computer systems, a problem arises when different OEMs have different requirements for interaction of the system board with the rest of the computer system. For example, some OEMs may require a signal to have one polarity (e.g., active high), but others may require the same signal to have another polarity (e.g., active low). Another example is some OEMs monitor fan speed by revolutions per minute (RPMs), whereas others use an on/off status bit. Other examples of variables that require proper configuration include BIOS (basic input/output system) interaction at boot time with the hardware, external enclosure connectivity, fan connectivity, power supply polarity control and remote sensing, remote reset and power cycling connectivity, and thermal and voltage measurement.
Accordingly, system boards must be properly configured for interaction with the rest of the computer system. One method of configuring system boards is to use jumpers and switches to set certain parameters. In some systems, one or two banks of DIP (dual in-line package) switches could code the differences between systems. In the case of BIOS interaction with the hardware at power-up, for example, the processor could read the switch positions to determine the configuration required (e.g., which drives are installed and how much main memory is available).
However, passive jumpers become less practical as the total number of required options exceeds three or four possibilities. As the number of options for computer configuration increases, a reasonable number of switches cannot allow for the number of computer configurations required. In addition, there are other problems with such switches. For instance, switch contacts naturally fail and may even be shorted by computer system users. (Users sometimes set switches using pencils, the graphite of which is conductive and can scrape off and short out the switches). Additionally, the switches are often hidden by expansion adapter cards and are difficult to access to make new settings. Furthermore, jumpers and switches are often improperly set at the customer site, creating unnecessary problems for customer support organizations.
To solve these problems, systems have been developed that utilize a small block of battery-backed CMOS RAM (complementary metal-oxide semiconductor random access memory) or, in the alternative, a form of nonvolatile random access memory (NVRAM) such as flash RAM or an EEPROM (electrically erasable programmable read-only memory) to store necessary system configuration parameters. An early example of such a system using CMOS RAM for BIOS access is the IBM PC/AT which uses the Motorola MC146818 chip. The ROM BIOS reads the CMOS RAM during the boot process to determine the proper system configuration. However, similar to the use of jumpers, this architectural implementation does not allow for low level configurable hardware.
Active hardware identifiers (IDs) have also been implemented. For instance, the IBM PS/2 computer system uses microchannel architecture (MCA) that allows automatic identification of an MCA adapter coupled to the MCA bus. Every adapter is assigned a two-byte identification number which is read and analyzed by the computer system. Third-party manufacturers also obtain an identification number for their MCA products; the assignment of these identification numbers is controlled by IBM. These IDs are stored in extended CMOS RAM, but could also be stored in a flash memory or an EEPROM. All MCA adapters and MCA system boards contain programmable option select (POS) registers which hold the two-byte identification number, four option bytes for the adapter manufacturer to configure the inserted adapter (fulfilling the function of the former DIP switches), and two sub-address extension bytes to provide access to an additional configuration register if needed by the manufacturer. Another example in which active hardware identifiers are stored in extended CMOS RAM is the bus architecture provided by Extended Industrial Standard Architecture (EISA).
During the boot process, the POST (power-on self test) routine of the BIOS reads the adapter ID and compares it with the configuration data which is held in the CMOS RAM. However, these IDs can not be utilized for the power-on state as they are normally powered off. Specifically, two modes of operation are allowed: the active mode and the setup mode. During the setup mode, only the POS registers are accessible, not the ordinary control registers. During the active mode (normal operation), the POS registers are not accessible; only the ordinary control registers are accessible. These IDs are effectively turned off during normal operation. Also, the system must be powered up for the CMOS to be read.
Thus, a need is demonstrated for configurable hardware so that the differing needs of various OEMs may be satisfied by identical system boards.
It has been discovered that configurable hardware may be implemented on a system board by providing an OEM ID to allow different customers to configure the system board as needed. Such a device advantageously allows different OEMs to utilize identical system boards without the need to change their value-added hardware and software. Additionally, the use of an OEM ID eliminates the need for jumpers and the problems associated therewith.
In one embodiment of the invention, a configurable hardware is for coupling to one of a plurality of hardware. Each of the plurality of hardware has a type. The configurable hardware includes a memory for storing an ID. The ID identifies the type of the hardware coupled to the configurable hardware.
In another embodiment, a computer system includes a first hardware and a second hardware. The first hardware is used by an OEM. The second hardware is for coupling to the first hardware. The second hardware includes a memory and a configuration circuit. The memory stores an ID identifying a configuration used by the OEM. The configuration circuit receives the ID identifying configuration used by the OEM. The configuration circuit decodes the ID to configure signals on the second hardware.
In another embodiment, a method for providing configurable hardware in a computer system includes providing a memory and providing configuration logic. The memory is powered by standby power. The memory stores an ID identifying an OEM configuration. The configuration logic is also powered by standby power. The configuration logic receives the OEM ID and signal of the computer system. The configuration logic configures the signals of the computer system.